package ae.pcfc.etks.online.common.domain;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.dozer.Mapping;

/**
 * CCompanyReq entity. @author Mohtisham.Salahria
 */
@Entity
@Table(name = "T_ETKS_CLIENT_COMPANY_REQ", schema = "ETKS_ONLINE_DBA")
@SequenceGenerator(name = "SQ_ETKS_CC_REQ", sequenceName = "SQ_ETKS_CC_REQ", initialValue = 1, allocationSize = 1)
public class ClientCompanyReq implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = 4052734747388884706L;
	
	private Long ccClientid;

	private String ccRole;

	@Mapping("strCompNameEng")
	private String ccNameEng;

	@Mapping("strCompNameArab")
	private String ccNameArb;

	@Mapping("strLicenseIssuingAuth")
	private String ccLicIssuingAuthority;

	@Mapping("strLicenseNumber")
	private String ccLicNo;

	@Mapping("strLicenseType")
	private String ccLicType;

	private String ccLicStatus;

	@Mapping("strLicenseIssueDate")
	private Date ccLicIssueDate;

	@Mapping("strLicenseExpiryDate")
	private Date ccLicExpiryDate;

	@Mapping("strPObox")
	private String ccPoboxNo;

	@Mapping("strPOBoxLoc")
	private String ccPoboxLocation;

	@Mapping("strOfficeNo")
	private String ccOffTel;

	@Mapping("strFaxNo")
	private String ccOffFax;

	@Mapping("strWebsiteURL")
	private String ccWebsite;

	@Mapping("strEmailAddress")
	private String ccEmail;

	@Mapping("strAddressEng")
	private String ccAddressEng;

	@Mapping("strAddressArb")
	private String ccAddressArb;

	@Mapping("strCity")
	private String ccCity;

	@Mapping("strCountry")
	private String ccCountry;

	@Mapping("strLicenseCopyURL")
	private String ccLicCopy;

	@Mapping("strMgrPassportCopyURL")
	private String ccMgrPassportCopy;

	private String applicationId;

	private String cpCreatedUser;
	
	@Mapping("strCategory")
	private String ccCategory;

	private String ccStatus;
	// Constructors

	private Set<ClientCompanyRoleReq> ClientCompanyRoleReqs = new HashSet<ClientCompanyRoleReq>(0);

	/** default constructor */
	public ClientCompanyReq() {
	}

	/** full constructor */
	public ClientCompanyReq(String ccRole, String ccNameEng, String ccNameArb, String ccLicIssuingAuthority, String ccLicNo,
			String ccLicType, String ccLicStatus, Date ccLicIssueDate, Date ccLicExpiryDate, String ccPoboxNo,
			String ccPoboxLocation, String ccOffTel, String ccOffFax, String ccWebsite, String ccEmail, String ccAddressEng,
			String ccAddressArb, String ccCity, String ccCountry, String ccLicCopy, String ccMgrPassportCopy, String applicationId,
			String ccRefNo) {
		this.ccRole = ccRole;
		this.ccNameEng = ccNameEng;
		this.ccNameArb = ccNameArb;
		this.ccLicIssuingAuthority = ccLicIssuingAuthority;
		this.ccLicNo = ccLicNo;
		this.ccLicType = ccLicType;
		this.ccLicStatus = ccLicStatus;
		this.ccLicIssueDate = ccLicIssueDate;
		this.ccLicExpiryDate = ccLicExpiryDate;
		this.ccPoboxNo = ccPoboxNo;
		this.ccPoboxLocation = ccPoboxLocation;
		this.ccOffTel = ccOffTel;
		this.ccOffFax = ccOffFax;
		this.ccWebsite = ccWebsite;
		this.ccEmail = ccEmail;
		this.ccAddressEng = ccAddressEng;
		this.ccAddressArb = ccAddressArb;
		this.ccCity = ccCity;
		this.ccCountry = ccCountry;
		this.ccLicCopy = ccLicCopy;
		this.ccMgrPassportCopy = ccMgrPassportCopy;
		this.applicationId = applicationId;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_ETKS_CC_REQ")
	@Column(name = "CC_REQID", nullable = false, precision = 11, scale = 0)
	public Long getCcClientid() {
		return this.ccClientid;
	}

	public void setCcClientid(Long ccClientid) {
		this.ccClientid = ccClientid;
	}

	@Column(name = "CC_ROLE", length = 10)
	public String getCcRole() {
		return this.ccRole;
	}

	public void setCcRole(String ccRole) {
		this.ccRole = ccRole;
	}

	@Column(name = "CC_NAME_ENG", length = 100)
	public String getCcNameEng() {
		return this.ccNameEng;
	}

	public void setCcNameEng(String ccNameEng) {
		this.ccNameEng = ccNameEng;
	}

	@Column(name = "CC_NAME_ARB", length = 50)
	public String getCcNameArb() {
		return this.ccNameArb;
	}

	public void setCcNameArb(String ccNameArb) {
		this.ccNameArb = ccNameArb;
	}

	@Column(name = "CC_LIC_ISSUING_AUTHORITY", length = 10)
	public String getCcLicIssuingAuthority() {
		return this.ccLicIssuingAuthority;
	}

	public void setCcLicIssuingAuthority(String ccLicIssuingAuthority) {
		this.ccLicIssuingAuthority = ccLicIssuingAuthority;
	}

	@Column(name = "CC_LIC_NO", length = 20)
	public String getCcLicNo() {
		return this.ccLicNo;
	}

	public void setCcLicNo(String ccLicNo) {
		this.ccLicNo = ccLicNo;
	}

	@Column(name = "CC_LIC_TYPE", length = 10)
	public String getCcLicType() {
		return this.ccLicType;
	}

	public void setCcLicType(String ccLicType) {
		this.ccLicType = ccLicType;
	}

	@Column(name = "CC_LIC_STATUS", length = 20)
	public String getCcLicStatus() {
		return this.ccLicStatus;
	}

	public void setCcLicStatus(String ccLicStatus) {
		this.ccLicStatus = ccLicStatus;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "CC_LIC_ISSUE_DATE", length = 7)
	public Date getCcLicIssueDate() {
		return this.ccLicIssueDate;
	}

	public void setCcLicIssueDate(Date ccLicIssueDate) {
		this.ccLicIssueDate = ccLicIssueDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "CC_LIC_EXPIRY_DATE", length = 7)
	public Date getCcLicExpiryDate() {
		return this.ccLicExpiryDate;
	}

	public void setCcLicExpiryDate(Date ccLicExpiryDate) {
		this.ccLicExpiryDate = ccLicExpiryDate;
	}

	@Column(name = "CC_POBOX_NO", length = 20)
	public String getCcPoboxNo() {
		return this.ccPoboxNo;
	}

	public void setCcPoboxNo(String ccPoboxNo) {
		this.ccPoboxNo = ccPoboxNo;
	}

	@Column(name = "CC_POBOX_LOCATION", length = 10)
	public String getCcPoboxLocation() {
		return this.ccPoboxLocation;
	}

	public void setCcPoboxLocation(String ccPoboxLocation) {
		this.ccPoboxLocation = ccPoboxLocation;
	}

	@Column(name = "CC_OFF_TEL", length = 20)
	public String getCcOffTel() {
		return this.ccOffTel;
	}

	public void setCcOffTel(String ccOffTel) {
		this.ccOffTel = ccOffTel;
	}

	@Column(name = "CC_OFF_FAX", length = 20)
	public String getCcOffFax() {
		return this.ccOffFax;
	}

	public void setCcOffFax(String ccOffFax) {
		this.ccOffFax = ccOffFax;
	}

	@Column(name = "CC_WEBSITE", length = 100)
	public String getCcWebsite() {
		return this.ccWebsite;
	}

	public void setCcWebsite(String ccWebsite) {
		this.ccWebsite = ccWebsite;
	}

	@Column(name = "CC_EMAIL", length = 100)
	public String getCcEmail() {
		return this.ccEmail;
	}

	public void setCcEmail(String ccEmail) {
		this.ccEmail = ccEmail;
	}

	@Column(name = "CC_ADDRESS_ENG", length = 200)
	public String getCcAddressEng() {
		return this.ccAddressEng;
	}

	public void setCcAddressEng(String ccAddressEng) {
		this.ccAddressEng = ccAddressEng;
	}

	@Column(name = "CC_ADDRESS_ARB", length = 100)
	public String getCcAddressArb() {
		return this.ccAddressArb;
	}

	public void setCcAddressArb(String ccAddressArb) {
		this.ccAddressArb = ccAddressArb;
	}

	@Column(name = "CC_CITY", length = 30)
	public String getCcCity() {
		return this.ccCity;
	}

	public void setCcCity(String ccCity) {
		this.ccCity = ccCity;
	}

	@Column(name = "CC_COUNTRY", length = 30)
	public String getCcCountry() {
		return this.ccCountry;
	}

	public void setCcCountry(String ccCountry) {
		this.ccCountry = ccCountry;
	}

	@Column(name = "CC_LIC_COPY", length = 50)
	public String getCcLicCopy() {
		return this.ccLicCopy;
	}

	public void setCcLicCopy(String ccLicCopy) {
		this.ccLicCopy = ccLicCopy;
	}

	@Column(name = "CC_MGR_PASSPORT_COPY", length = 50)
	public String getCcMgrPassportCopy() {
		return this.ccMgrPassportCopy;
	}

	public void setCcMgrPassportCopy(String ccMgrPassportCopy) {
		this.ccMgrPassportCopy = ccMgrPassportCopy;
	}

	@Column(name = "APPLICATION_ID", length = 2000)
	public String getApplicationId() {
		return this.applicationId;
	}

	public void setApplicationId(String applicationId) {
		this.applicationId = applicationId;
	}

	@Column(name = "CC_CATEGORY", length = 10)
	public String getCcCategory() {
		return ccCategory;
	}

	public void setCcCategory(String ccCategory) {
		this.ccCategory = ccCategory;
	}

	@Column(name = "CC_CREATEDUSER", length = 50)
	public String getCpCreatedUser() {
		return cpCreatedUser;
	}

	/**
	 * @param cpCreatedUser
	 *            the cpCreatedUser to set
	 */
	public void setCpCreatedUser(String cpCreatedUser) {
		this.cpCreatedUser = cpCreatedUser;
	}

	@Column(name = "CC_STATUS", length = 1)
	public String getCcStatus() {
		return this.ccStatus;
	}

	public void setCcStatus(String ccStatus) {
		this.ccStatus = ccStatus;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "CCompanyReq")
	public Set<ClientCompanyRoleReq> getClientCompanyRoleReqs() {
		return this.ClientCompanyRoleReqs;
	}

	public void setClientCompanyRoleReqs(Set<ClientCompanyRoleReq> ClientCompanyRoleReqs) {
		this.ClientCompanyRoleReqs = ClientCompanyRoleReqs;
	}
}